Placement of resource-consuming clients, such as virtual machines (VMs), on the right host devices in a distributed computer system is an important factor in efficiently utilizing physical resources in the distributed computer system. An effective client placement strategy must meet the requirements of the clients and optimize several, sometimes conflicting, goals, while taking into consideration the complexities of the distributed computer system.
Conventional automated placement techniques exist that can place a new client on a host device that is less loaded in terms of CPU and memory. However, these automated placement techniques are typically limited to CPU and memory loads on host devices when selecting which clients should be placed on which host devices. If a user wants to factor in other criteria, the user would need to manually check each and every host device in the inventory to select the host device that satisfies all the required criteria, which could be tedious and time consuming process if the inventory of host devices is large. In addition, this process would have to be repeated if there are multiple clients with different requirements.